#!/usr/bin/env python
# -*-coding:UTF-8 -*-
'''
@Project ：19-xpath站长素材.py
@File：34-async或者await.py
@Author ：文非
@Date：2021/3/1510:52
@Require：
'''
# async或者await关键字
# python3.5以后使用

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
'''
@Project ：19-xpath站长素材.py
@File：33-asyncio.py
@Author ：文非
@Date：2021/3/1510:38
@Require：
'''
# asyncio python3.4以及之后的版本

import asyncio

# @asyncio.coroutine  # 装饰器装饰函数让函数成为协程对象
async def func1():
    print(1)
    # yield from asyncio.sleep(2) #遇到IO耗时操作，自动切换到tasks中的其他任务
    await asyncio.sleep(2)
    print(2)


# @asyncio.coroutine
async def func2():
    print(3)
    # yield from asyncio.sleep(2) #原道IO耗时操作，自动切换到task中的其他任务
    await asyncio.sleep(2)
    print(4)


tasks = [
    asyncio.ensure_future((func1())),
    asyncio.ensure_future((func2()))
]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks)) # 随机执行task中的函数

# 遇到IO就自动切换